DISCUSSION
The
ATSULeftwardCursorPosition function determines the edge offset in backing store memory corresponding to the left of the high caret position based on the type of cursor movement specified in the
iMovementType parameter. You should call
ATSULeftwardCursorPosition and the function
ATSURightwardCursorPosition when the initial edge offset is at a line boundary. At a line boundary, the caret is split into a high and low caret. If the initial edge offset is not at a line direction boundary, you should instead call the functions
ATSUNextCursorPosition and
ATSUPreviousCursorPosition to calculate the next and previous cursor positions.
Note that you may not be able to move the cursor 2-bytes, since doing so might place the cursor in the middle of a surrogate pair.
Except in the case of Indic text (and other cases where the font rearranges the glyphs), for left-to-right text,
ATSULeftwardCursorPosition has the same effect as calling
ATSUPreviousCursorPosition. For right-to-left text,
ATSULeftwardCursorPosition has the same effect as calling
ATSUNextCursorPosition.